﻿
#ifndef __COMMH_ERROR_H__
#define __COMMH_ERROR_H__

enum enumErrNO
{
    RET_OK = 0, ///< 成功

    ///< 系统错误
    RET_SYS_MIN = 1,
    RET_SYS_MAX = 199,
    RET_SYS_ERROR               = 1,      ///< 系统错误
    RET_SYSTEM_FAIL             = 2,
    RET_INVALID_PARAM           = 3,
    RET_DATA_DELETED            = 4,
    RET_DATA_NOT_READY          = 5,
    RET_NO_RECORDER             = 6,
    RET_REQ_NOT_COMPLETE        = 7,	//用来校验前端发来的optional类型数据是否赋便
    RET_SYS_NULL_POINTER        = 8,    //系统空指针
    RET_SYS_BUSY                = 9,    //系统繁忙
    RET_SYS_CMD_TIMEOUT         = 10,   //命令超时
    RET_DEFEND_OFFTIME          = 11,   //防沉迷退出累计未满5小时
    RET_SYS_PB_DECODE_FAIL      = 12,   //系统解析protobuf失败
    RET_SYS_PB_ENCODE_FAIL      = 13,   //系统编码protobuf失败
    RET_SYS_PB_ILLEGAL_USER     = 14,   //非法账号，版署账号检查失败返回
    RET_SYS_USER_FULL           = 15,   //系统支持的用户已满,无法注册。
    RET_SYS_UNKNOWN_CMD         = 16,   //不支持的系统命令或者子命令
	RET_SYS_GM_PAPA		        = 17,   //GM参数错误
	ERROR_SYS_CONFIG_EMPTY      = 18,   //系统数值配置项空
	ERROR_SYS_PLATFORM_FLAG     = 19,   //前端透传平台表示错误

    // 用户引起的错误
    RET_USER_MIN = 200,
    RET_NOT_LOGIN               =  201,     //未登录
    ERROR_ONLINE_FULL           =  202,     //在线数据已满
    ERROR_NO_ONLINE_DATA        =  203,     //没有在线数据
    ERROR_USER_TOKEN_LEN        =  204,     //用户帐号标识长度错误
    ERROR_ROLE_NAME_LEN         =  205,     //角色昵称标识长度错误
    ERROR_ROLE_NAME_REGIST      =  206,     //角色昵称标识已经注册
    ERROR_ROLE_NAME_CHAR_SET    =  207,     //角色昵称字符编码错误
    ERROR_ROLE_NAME_SEN_WORD    =  208,     //角色昵称包含屏蔽词汇
    ERROR_ROLE_NAME_SPC_BYTE    =  209,     //角色昵称包含特殊字符
    ERROR_ROLE_NAME_NOT_EXIST   =  210,     //该角色不存在与系统中
    ERROR_ROLE_SEX_DATA_LEN     =  211,     //用户性别数据错误

    //金钱相关
    ERROR_SILVER_VALID    				=  301, //角色银币负值非法
    ERROR_SILVER_OVER    				=  302, //角色银币增加会溢出
    ERROR_SILVER_LESS    				=  303, //角色银币不足
    ERROR_GOLD_VALID    				=  304, //角色金币负值非法
    ERROR_GOLD_OVER    				    =  305, //角色金币增加会溢出
    ERROR_GOLD_LESS                     =  306, //角色金币不足

    //byron
    ERROR_BASE_INT_VALID                =  307, //角色属性值Int不合理
    ERROR_BASE_INT_OVER                 =  308, //角色属性值Int增加会溢出
    ERROR_BASE_INT_LESS                 =  309, //角色属性值Int不足
    ERROR_BASE_LL_INT_VALID             =  310, //角色属性值Int64不合理
    ERROR_BASE_LL_INT_OVER              =  311, //角色属性值Int64增加会溢出
    ERROR_BASE_LL_INT_LESS              =  312, //角色属性值Int64不足
    ERROR_ROLE_LVL_EXP_INVALID          =  313, //角色等级经验属性值非法

    //战斗相关
    ERROR_BATTLE_NOT_IN_ROOM            =  351, //角色不在任何对战中
    ERROR_BATTLE_ALREADY_OVER           =  352, //角色所在对战已结束
    ERROR_BATTLE_PARAMETER_LACK         =  353, //战斗操作参数不足
    ERROR_BATTLE_NO_CAMP_UNIT           =  354, //战斗单元已经释放
    ERROR_BATTLE_NOT_IN_STAT            =  355, //非战斗阶段不能操作
    ERROR_BATTLE_NOT_IN_TURN            =  356, //非自己回合不能操作
    ERROR_BATTLE_NO_HAND_CARD           =  357, //没有这样的手牌数据
    ERROR_BATTLE_NO_PLAY_CARD           =  358, //没有这样的场牌数据
    ERROR_BATTLE_CARD_CONF_NULL         =  359, //卡牌配置数据空
    ERROR_BATTLE_NO_ENOUGH_MP           =  360, //没有足够的法力值
    ERROR_BATTLE_NO_GROUP_POS           =  361, //场上卡牌数据已满
    ERROR_BATTLE_NO_IN_ACTION           =  362, //非自己回合不能行动
    ERROR_BATTLE_OVER_ACT_TIME          =  363, //本回合行动时间过期
    ERROR_BATTLE_ALREADY_ATTACK         =  364, //卡牌已经进行过攻击
    ERROR_BATTLE_NO_TARGET_ROLE         =  365, //目标角色非本房间对战方
    ERROR_BATTLE_NO_TARGET_ID           =  366, //没有攻击的目标卡牌ID
    ERROR_BATTLE_NO_TARGET_OBJ          =  367, //没有攻击的目标卡牌实体
    ERROR_BATTLE_NO_ATTACK_OBJ          =  368, //没有攻击的主体卡牌实体
    ERROR_BATTLE_ALREADY_SWAP           =  369, //角色已经更换过卡牌了
    ERROR_BATTLE_ALREADY_START          =  370, //角色已经请求准备好了
    ERROR_BATTLE_INVALID_STAT           =  371, //所请求类型在当前阶段非法
    ERROR_BATTLE_ATTACK_TAUNT_FIRST     =  372, //需要先攻击具有护法状态目标
    ERROR_BATTLE_CARD_CANNOT_ATTACK     =  373, //目标无法主动攻击
    ERROR_BATTLE_TARGET_CANNOT_BE_ATK   =  374, //目标无法被攻击
    ERROR_BATTLE_ATTACK_OBJECT_NUM      =  375, //攻击目标数量错误
    ERROR_BATTLE_TARGET_NOT_MATCH       =  376, //战斗目标不符合要求
    ERROR_BATTLE_CARD_TYPE_NOT_MATCH    =  377, //卡牌类型不符合要求
    ERROR_BATTLE_HAND_CARD_FULL         =  378, //角色手牌已满
    ERROR_BATTLE_INIT_BATTLE_CARD       =  379, //初始化战斗卡牌错误
	ERROR_BATTLE_RESULT					=  380, //战斗结果非法
	ERROR_BATTLE_INVALID_BATTLEMODE		=  381, //不支持的战斗模式
	ERROR_BATTLE_DECK_NOT_READY		    =  382, //角色对战牌组未准备好
	ERROR_BATTLE_DECK_CARD_NUMBER		=  383, //角色对战牌组牌数量不符
	ERROR_BATTLE_INVALID_DECK_TYPE		=  384, //不支持的牌组类型
	ERROR_BATTLE_DECK_NOT_EXIST		    =  385, //战斗牌组不存在
    ERROR_BATTLE_NO_SKILL_CARD          =  386, //没有这样的技能牌数据
    ERROR_BATTLE_NO_ARCANE_POS          =  387, //秘法牌挂载达到上限
    ERROR_BATTLE_SAME_ARCANE_EXIST      =  388, //已经挂载相同秘法牌
    ERROR_BATTLE_STATUS_ID_NO_FIT       =  389, //状态类型不符合要求

    //战斗Lua相关
    ERROR_BATTLE_LUA_LESS_ARGU          =  601, //战斗Lua参数不足
    ERROR_BATTLE_LUA_ARGU_TYPE          =  602, //战斗Lua参数类型错误
    ERROR_BATTLE_LUA_LOAD_STRING        =  603, //战斗Lua加载字符串错误
    ERROR_BATTLE_LUA_EMPTY_NAME         =  604, //卡牌没有配置战斗Lua脚本名称
    ERROR_BATTLE_LUA_EMPTY_CONTENT      =  605, //卡牌没有配置战斗Lua脚本内容
    ERROR_BATTLE_LUA_FUNC_EMPTY         =  606, //战斗Lua脚本没有目标函数定义

    //公共PB配置读取
    ERROR_PBCONFIG_CONFIG_ID            =  701, //配置ID错误
    ERROR_PBCONFIG_REPEAT_ID            =  702, //配置ID重复
    ERROR_PBCONFIG_HASH_ALLOC           =  703, //内存分配失败
    ERROR_PBCONFIG_CONFIG_NULL          =  704, //配置为空
    ERROR_PBCONFIG_CONFIG_CONTENT       =  705, //配置内容错误

	//卡牌相关
	ERROR_CARD_NO_OPT		            =  800, //不支持的卡牌操作
	ERROR_CARD_PARA_WRONG	            =  801, //参数非法
	ERROR_CARD_REACH_MAX	            =  802, //拥有的卡片超过限制		
	ERROR_CARD_GROUP_CFG	            =  803, //牌组配置错误	
	
	//套牌相关
	ERROR_DECK_NO_OPT		            =  850, //不支持的卡牌操作
	ERROR_DECK_PARA_WRONG	            =  851, //参数非法	
	ERROR_DECK_REACH_MAX	            =  852, //拥有的卡片超过限制
	ERROR_DECK_CARD_WRONG	            =  853, //套牌中的卡片非法
	ERROR_DECK_MODIFY_NAME	            =  854, //套牌名称非法
	ERROR_DECK_ID_NONE		            =  855, //套牌id不存在
	ERROR_DECK_CARD_GROUP_ID		    =  856, //套牌的牌组配置错误
	ERROR_DECK_MODIFY_HERO	            =  857, //套牌英雄非法
	ERROR_DECK_MODIFY_CARD_GROUP        =  858, //套牌牌组配置非法
	
    //好友系统
    ERROR_FRIEND_EXIST                  =  951, //已经是自己的好友
    ERROR_FRIEND_FULL                   =  952, //列表已经满了
    ERROR_FRIEND_NOT_FRIEND             =  953, //不是好友
    ERROR_FRIEND_OPT_SELF               =  954, //操作自己
    ERROR_FRIEND_OPT_ERROR              =  955, //操作类型错误
    ERROR_FRIEND_OFFLINE                =  956, //好友不在线

	//英雄相关
	ERROR_HERO_REPEAT_ADD		        =  1000, //英雄重复添加
	ERROR_HERO_REACH_MAX	            =  1001, //拥有的英雄超过限制
	ERROR_ROLE_HERO_REP_CFG	            =  1002, //配置重复
	ERROR_ROLE_HERO_ID_WRONG            =  1003, //英雄ID非法
	ERROR_ROLE_HERO_NONE	            =  1004, //英雄不存在

    //物品系统
    ERROR_ITEM_INVALID_DROP_ITEM_TYPE   =  1101, //无效的掉落类型
	
	//商店相关
	ERROR_SHOP_CARD_ATTR		        =  1150, //卡牌禁止出售
	ERROR_SHOP_SELL_CARD		        =  1151, //卡牌不存在
	ERROR_SHOP_NO_OPT					=  1152, //不支持的操作
	ERROR_SHOP_PARA_WRONG				=  1153, //参数非法
	ERROR_SHOP_LACK_CARD		        =  1154, //卡牌不足
	ERROR_SHOP_LACK_CARD_BAG	        =  1155, //卡牌包不足


    //腾讯平台返回码（转换后）
    ERROR_TAPI_RET_1                    = 2250, //用户没有开通对应的平台
    ERROR_TAPI_RET_2                    = 2251, //账户被冻结
    ERROR_TAPI_RET_3                    = 2252, //账户余额不足
    ERROR_TAPI_RET_4                    = 2253, //用户没有开通腾讯朋友
    ERROR_TAPI_RET_5                    = 2254, //用户没有开通QQ空间
    ERROR_TAPI_RET_6                    = 2255, //支付相关错误:cdkey不存在
    ERROR_TAPI_RET_7                    = 2256, //支付相关错误:用户和cdkey不存在绑定关系，或礼品赠送完毕
    ERROR_TAPI_RET_8                    = 2257, //支付相关错误:加活动受限
    ERROR_TAPI_RET_9                    = 2258, //访问频率超限

    //排位赛系统
    ERROR_QUALIFYING_OPT_ERROR 	        = 2300, //CMD参数opt发错
    ERROR_QUALIFYING_CLEAR_ERROR         = 2301, //排位赛正在结算,暂时无法使用

    //VIP系统
    ERROR_VIP_OPT_ERROR 	        = 2350, //CMD参数opt发错
    ERROR_VIP_ID_ERROR 				= 2351, //发送过来的VIP ID不存在
    ERROR_BUY_ID_ERROR         = 2352, //发送过来的BUY ID 不存在


	//登录奖励
	ERROR_LOGIN_REWARD_UNFIT_TARGET     = 2450, //不满足领取奖励条件
    ERROR_LOGIN_REWARD_GET_ALREADY      = 2451, //目标奖励已经领取
    ERROR_MAIN_SUB_CMD                  = 2452, //错误的子操作命令

    RET_USER_MAX = 9999,

    // 业务逻辑错误
    RET_LOGIC_MIN = 10000,
    RET_LOGIC_MAX = 19999,
    RET_NO_USER       				= 10001,   //未注儿
    RET_ERROR_ZONEID  				= 10002,   //大区ID错误
};

#endif //end of __COMMH_ERROR_H__
